package com.net.xpay.core.domain.safePay;

import com.net.common.domain.VersionedDomain;
import com.net.xpay.core.enums.SafePayBookAccountAuditStatus;
import com.net.xpay.core.enums.SafePayBookAccountBookStatus;
import com.net.xpay.core.enums.SafePayBookAccountSignMethod;
import com.net.xpay.core.enums.SafePayBookAccountSignStatus;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 安全发账本账户
 * 一个用户可以开通多个账本，一个用户的支付宝账号只能开通一个账本
 */
@Getter
@Setter
@NoArgsConstructor
public class SafePayBookAccount extends VersionedDomain {

    @ApiModelProperty(notes = "用户id")
    private Long userId;

    @ApiModelProperty(notes = "支付宝账号")
    private String alipayNickName;

    @ApiModelProperty(notes = "支付宝主体名称")
    private String alipayName;

    @ApiModelProperty(notes = "接收短信验证码的手机号")
    private String receiveMobile;

    @ApiModelProperty(notes = "安全付批量转账是否需要短信验证")
    private Boolean batchEnsure;

    @ApiModelProperty(notes = "支付宝推送的 支付宝模糊账号")
    private String fuzzyAlipayLogonId;

    @ApiModelProperty(notes = "支付宝用户id")
    private String alipayUid;

    @ApiModelProperty(notes = "资金记账本id")
    private String bookId;

    @ApiModelProperty(notes = "支付宝签约协议号")
    private String agreementNo;

    @ApiModelProperty(notes = "外部的签约协议号")
    private String externalAgreementNo;

    @ApiModelProperty(notes = "签约时间")
    private String signTime;

    @ApiModelProperty(notes = "签约到期时间")
    private String signInvalidTime;

    @ApiModelProperty(notes = "签约返回的（不知道有啥用先存着）")
    private String loginToken;

    @ApiModelProperty(notes = "通知id （防重复处理）")
    private String notifyId;

    @ApiModelProperty(notes = "资金账本托管账户信息 json")
    private String extCardInfo;

    //资质信息
    @ApiModelProperty(notes = "法人手持身份证正面")
    private String idCardFront;

    @ApiModelProperty(notes = "法人手持身份证反面")
    private String idCardBack;

    @ApiModelProperty(notes = "业务场景说明书加公章")
    private String bizSceneDesc;

    @ApiModelProperty(notes = "商户承诺书")
    private String merchantCommitment;

    @ApiModelProperty(notes = "网站备案信息")
    private String icpInfo;

    @ApiModelProperty(notes = "企业名称")
    private String businessName;

    @ApiModelProperty(notes = "法人手持营业执照")
    private String businessLicense;

    @ApiModelProperty(notes = "办公室照片")
    private List<String> officeImages;

    @ApiModelProperty(notes = "审核信息")
    private String auditMessage;

    @ApiModelProperty(notes = "审核状态")
    private SafePayBookAccountAuditStatus auditStatus;

    @ApiModelProperty(notes = "审核提交时间")
    private LocalDateTime auditSubmitTime;

    @ApiModelProperty(notes = "审核时间")
    private LocalDateTime auditTime;

    @ApiModelProperty(notes = "签约状态")
    private SafePayBookAccountSignStatus signStatus;

    @ApiModelProperty(notes = "账本开通状态")
    private SafePayBookAccountBookStatus bookStatus;

    @ApiModelProperty(notes = "签约方式")
    private SafePayBookAccountSignMethod signMethod;

    @ApiModelProperty(notes = "备注 最多16个字")
    private String remark;


    public static SafePayBookAccount getInstance() {
        return new SafePayBookAccount();
    }
}
